package SubLargeNumber;
/**
 * 姓名：薛继光
 * 班级：软工1101班
 * 学号：1108010127
 * 时间：2013/9/17
 * 类说明：这是一个计算大数相减的类
 * 方法步骤：
 * 1.与大数相加类似，首先要定义三个长度相同的整形数组a，b，c
 * 2.输出被减数c和减数b
 * 3.从个位开始逐个计算，若c[i]-b[i]<0，则a[i]=c[i]-b[i]+10，同时
 * 使a[i-1]=a[i-1]-1。否则，a[i]=c[i]-b[i].
 * 4.输出结果a
 */

public class SubLargeNumber {//大数相减类
	public static void main(String args[]){
		int[] c = {1,0,5,7,1,1,0,2,3,4,6,9,1,3,6,9,2,3,9,0,9,8};//被减数
		int[] b = {0,0,5,9,1,6,4,5,6,2,3,4,5,7,2,1,3,4,0,3,2,9};//减数
		int[] a = new int[c.length];//结果值
		
		int result = 0,k = 0,i = 0;//临时结果存储result，标志点k,i
		
		for(i = 0;i < c.length;i++){//循环到左起有意义位置
			if(0 != c[i]){
				k = i;
				break;
			}
		}
		
		for(i = k;i < c.length;i++){//输出被减数
			System.out.printf("%d",c[i]);
		}
		System.out.printf("\n减去:\n");
		
		for(i = 0;i < b.length;i++){
			if(0 != b[i]){
				k = i;
				break;
			}
		}
		
		for(i = k;i < b.length;i++){//输出减数
			System.out.printf("%d",b[i]);
		}
		System.out.printf("\n等于:\n");
		
		for(i = c.length - 1;i >= 0;i--){//计算
			result = c[i] - b[i];
			if(result < 0){
				a[i] = result + 10;//若结果小于0则将结果加10
				c[i - 1] = c[i - 1] - 1;//被减数前一位借1
			}
			else
				a[i] = result;//否则正常输出
		}
		
		for(i = 0;i < c.length;i++){
			if(0 != a[i]){
				k = i;
				break;
			}
		}
		
		for(i = k;i < c.length;i++){//输出结果
			System.out.printf("%d",a[i]);
		}
		
		
	}

}
